package com.sws.person.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import com.sws.person.domain.PerPerson;

/**
 * 人员信息Service接口
 * 
 * @author cx
 * @date 2025-06-09
 */
public interface IPerPersonService 
{
    /**
     * 添加人员信息到设备数据库
     * @param perPerson
     * @return 设备上的图片路径
     */
    public PerPerson addPersontoCamera(PerPerson perPerson) throws Exception;

    /**
     * 查询人员信息
     * 
     * @param id 人员信息主键
     * @return 人员信息
     */
    public PerPerson selectPerPersonById(Long id);

    /**
     * 根据pid查询设备中的人员信息
     * @param pid
     * @return
     */
    public PerPerson selectCameraPersonByPid(String pid,String sn) throws Exception;

    /**
     * 查询人员信息列表
     * 
     * @param perPerson 人员信息
     * @return 人员信息集合
     */
    public List<PerPerson> selectPerPersonList(PerPerson perPerson);

    /**
     * 新增人员信息
     * 
     * @param perPerson 人员信息
     * @return 结果
     */
    public int insertPerPerson(PerPerson perPerson);

    /**
     * 修改人员信息
     * 
     * @param perPerson 人员信息
     * @return 结果
     */
    public int updatePerPerson(PerPerson perPerson);

    /**
     * 批量删除人员信息
     * 
     * @param ids 需要删除的人员信息主键集合
     * @return 结果
     */
    public int deletePerPersonByIds(Long[] ids);

    /**
     * 删除人员信息信息
     * 
     * @param id 人员信息主键
     * @return 结果
     */
    public int deletePerPersonById(Long id);

    /**
     * 同步摄像头服务器数据到数据库
     * @param personData 摄像头服务器返回的人员数据
     * @param sn 设备SN号
     * @return 操作结果（成功或失败）
     */
    boolean syncPersonFromCamera(Map<String, Object> personData, String sn);

    /**
     * 批量同步摄像头服务器数据到数据库
     * @param personList 摄像头服务器返回的人员数据列表
     * @param sn 设备SN号
     * @return 成功同步的数据条数
     */
    int syncPersonsFromCamera(List<Map<String, Object>> personList, String sn);

    String convertToFullUrl(String relativePath);

    /**
     * 仅删除设备上的人员信息（不操作本地数据库）
     *
     * @param pids 设备人员ID数组
     * @return 成功删除数量
     */
    int deletePerPersonInCameraByPids(String[] pids);


    PerPerson selectPerPersonByPid(String pid);
}
